﻿using System;
using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MonopolyNOHI2015;

namespace MonopolyTests
{
    [TestClass]
    public class EigendomsbewijsTests
    {
        private Eigendomsbewijs _eigendomsbewijs;
        private StraatVeld _veld;
        private Bord _bord;
        private Speler _spelerHerman;
        private Speler _spelerRandy;

        [TestInitialize]
        public void Setup()
        {
            _veld = new StraatVeld(1, "Dorpsstraat", "Ons Dorp", 0, 0);
            _bord = new Bord();
            _spelerHerman = new Speler("Herman", 850, _bord);
            _spelerRandy = new Speler("Randy", 850, _bord);
            _eigendomsbewijs = new Eigendomsbewijs(_spelerHerman, _veld, 60);
        }

        [TestMethod]
        public void TestOfGetKoopBedrag60Teruggeeft()
        {
            Assert.AreEqual(expected: 60, actual: _eigendomsbewijs.GetKoopbedrag());
        }

        [TestMethod]
        public void TestOfGetEigenaarspelerHermanTeruggeeft()
        {
            Assert.AreEqual(expected: _spelerHerman, actual: _eigendomsbewijs.GetEigenaar());
        }

        [TestMethod]
        public void TestOfSetEigenaarDeEigenaarRandyMaakt()
        {
            // In eerste instantie is de eigenaar Herman
            Assert.AreEqual(expected: _spelerHerman, actual: _eigendomsbewijs.GetEigenaar());
            _eigendomsbewijs.SetEigenaar(_spelerRandy);
            Assert.AreEqual(expected: _spelerRandy, actual: _eigendomsbewijs.GetEigenaar());
        }

        [TestMethod]
        public void TestOfGetVeldHetVeldDorpsstraatTerugGeeft()
        {
            Assert.AreEqual(expected: _veld, actual: _eigendomsbewijs.GetVeld());
        }

        [TestMethod]
        public void TestOfGetVeldPositie1Teruggeeft()
        {
            Assert.AreEqual(expected: 1, actual: _eigendomsbewijs.GetVeldPositie());
        }

        [TestMethod]
        public void TestOfGetVeldNaamDorpsstraatTerugGeeft()
        {
            Assert.AreEqual(expected: "Dorpsstraat", actual: _eigendomsbewijs.GetVeldNaam());
        }
    }
}
